/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.pebom.util;


import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.pebom.empresa.Cliente;
import org.pebom.empresa.Produto;
import org.pebom.empresa.Venda;

/**
 *
 * @author Drury
 */
public class VendaDAO {
   

/**
 *
 * @author Drury
 */

     private static VendaDAO vendaDAO;

    public static VendaDAO getInstance() {
        if (vendaDAO == null) {
            vendaDAO = new VendaDAO();
        }
        return vendaDAO;
    }



   public void insertVenda(Venda venda ) throws SQLException {
       
       
        String sql = "insert into Vendas values (" + venda.getProduto().getId() + ",'"  + venda.getCliente().getCpf() + ",'"  + venda.getCodigo() + ",'"  + venda.getData()  + ",'"  +  venda.getQtdVendida()  +  ")";
        BD.getInstance().getConn().createStatement().execute(sql);
    }
   
//   public int buscaID() throws SQLException {
//       String sql = "select MAX(id) from recursos";
//       ResultSet resultInt = BD.getInstance().getConn().createStatement().executeQuery(sql);
//       int id = 1;
//       while (resultInt.next()){
//            id = resultInt.getInt(1);
//       }
//      
//       return id;
//   }

    public List<Venda> buscar() throws SQLException {
        List<Venda> vendas = new ArrayList<Venda>();
        String sql = "select * from vendas";
        ResultSet results = BD.getInstance().getConn().createStatement().executeQuery(sql);


        while (results.next()) {
           Venda venda = new Venda();
           Produto produto = new Produto();
           Cliente cliente = new Cliente();
           int cpf;
           int idProduto;
           cpf = results.getInt(1);
           idProduto = results.getInt(2);
           
           // Buscar o produto relacionado na venda e colocarmos no objeto produto
           ResultSet resultProduto = BD.getInstance().getConn().createStatement().executeQuery("select * from produtos where id="+idProduto);
           
               produto.setId(resultProduto.getInt(1));
               produto.setNome(resultProduto.getString(2));
               produto.setCategoria(resultProduto.getString(3));
               produto.setDescricao(resultProduto.getString(4));
               produto.setPreco(resultProduto.getFloat(5));
               produto.setQtdEstoque(resultProduto.getInt(6));
               
           ResultSet resultCliente = BD.getInstance().getConn().createStatement().executeQuery("select * from clientes where cpf="+cpf);
           
           cliente.setCpf(resultCliente.getInt(1));
           cliente.setNome(resultCliente.getString(2));
           
           venda.setCliente(cliente);
           venda.setProduto(produto);
           venda.setData(results.getDate(3));
           venda.setQtdVendida(results.getInt(4));
           resultProduto.close();
           resultCliente.close();
           
           vendas.add(venda);
           
        }
        
        return vendas;
    }
    
    public int buscaCod() throws SQLException {
       String sql = "select MAX(codigo) from vendas";
       ResultSet resultInt = BD.getInstance().getConn().createStatement().executeQuery(sql);
       int codigo = 1;
       while (resultInt.next()){
           codigo = resultInt.getInt(1);
       }
      resultInt.close();
      System.out.println("Buscou cod do BD");
       return codigo;
   }
    
    
    
    public List<Venda> buscar(int ClienteCpf, int id) throws SQLException {
        List<Venda> vendas = new ArrayList<Venda>();
        String sql = "select * from vendas where cpf="+ClienteCpf+" and id_produto="+id;
        ResultSet results = BD.getInstance().getConn().createStatement().executeQuery(sql);


        while (results.next()) {
           Venda venda = new Venda();
           Produto produto = new Produto();
           Cliente cliente = new Cliente();
           int cpf;
           int idProduto;
           cpf = results.getInt(1);
           idProduto = results.getInt(2);
           
           // Buscar o produto relacionado na venda e colocarmos no objeto produto
           ResultSet resultProduto = BD.getInstance().getConn().createStatement().executeQuery("select * from produtos where id="+idProduto);
           
               produto.setId(resultProduto.getInt(1));
               produto.setNome(resultProduto.getString(2));
               produto.setCategoria(resultProduto.getString(3));
               produto.setDescricao(resultProduto.getString(4));
               produto.setPreco(resultProduto.getFloat(5));
               produto.setQtdEstoque(resultProduto.getInt(6));
               
           ResultSet resultCliente = BD.getInstance().getConn().createStatement().executeQuery("select * from clientes where cpf="+cpf);
           
           cliente.setCpf(resultCliente.getInt(1));
           cliente.setNome(resultCliente.getString(2));
           
           venda.setCliente(cliente);
           venda.setProduto(produto);
           venda.setData(results.getDate(3));
           venda.setQtdVendida(results.getInt(4));
           
           vendas.add(venda);
           
        }
        System.out.println("Buscou vendas do BD");
        return vendas;
    }
    
    
    


}
